﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

public class ItemDesejado {
    public string nomeUsuario { get; set; }
    public string nomeItemDesejado { get; set; }
    public DateTime? dtPedido { get; set; }
    public int qtdVezesDesejadas { get; set; }
    public int qtdVezesCompradas { get; set; }
}

public partial class Administrador_Relatorio_Outros_itensDesejados : System.Web.UI.Page {

    protected void Page_Load(object sender, EventArgs e) {


    }

    protected void btnPesquisar_Click(object sender, EventArgs e) {
        DateTime dtInicial = Convert.ToDateTime(TxtDataInicial.Text);
        DateTime dtFinal = Convert.ToDateTime(TxtDataFinal.Text);
        PetShopService.Relatorio relatorio = new PetShopService.Relatorio();
        PetShopService.UsuarioServicos usuarioServicos = new  PetShopService.UsuarioServicos();
        PetShopService.ProdutoServicos produtoServicos = new PetShopService.ProdutoServicos();

        List<PetShopService.ItensDesejados> itensDesejados = relatorio.RetornaItensDesejados(dtInicial, dtFinal);
        List<ItemDesejado> itemDesejadoRelatorio = new List<ItemDesejado>();
        foreach (PetShopService.ItensDesejados itemDesejado in itensDesejados) {

            ItemDesejado oItemDesejado = itemDesejadoRelatorio.FirstOrDefault(i => i.nomeItemDesejado == itemDesejado.Produto.Nome);

            if (oItemDesejado == null) {
                oItemDesejado = new ItemDesejado();

                oItemDesejado.nomeUsuario = usuarioServicos.RetornaUsuario(itemDesejado.idUsuario).nome;
                oItemDesejado.nomeItemDesejado = produtoServicos.RetornaProduto(itemDesejado.idProduto).Nome;
                oItemDesejado.dtPedido = itemDesejado.dtAdicionado;
                oItemDesejado.qtdVezesDesejadas += 1;

                if ((bool)itemDesejado.foiComprado)
                    oItemDesejado.qtdVezesCompradas += 1;

                itemDesejadoRelatorio.Add(oItemDesejado);
            }
            else {
                oItemDesejado.qtdVezesDesejadas += 1;

                if ((bool)itemDesejado.foiComprado)
                    oItemDesejado.qtdVezesCompradas += 1;
            }
        }

        if(itemDesejadoRelatorio.Count == 0)
            return;

        string nomeProduto = itemDesejadoRelatorio.OrderByDescending(i => i.qtdVezesDesejadas).ThenBy(i => i.qtdVezesCompradas).FirstOrDefault().nomeItemDesejado;

        lblMaisDesejado.Text= "Produto mais desejado e comprado "+nomeProduto;
        linkComprarMaisDesejado.Text = "Comprar produto " + nomeProduto;
        gvItensDesejados.DataSource = itemDesejadoRelatorio.OrderByDescending(i => i.qtdVezesDesejadas);
        gvItensDesejados.DataBind();
    }
}